package systeme;

import static java.lang.Math.abs;

import org.apache.log4j.Logger;


import ihm.Deplacement;

import java.util.Collections;
import java.util.Comparator;

/**
 * @author Ilyass
 * @version 1.0
 * @created 22-mars-2012 22:58:39
 */
public class Montee extends Etat {
	/**
	 * Logger for this class
	 */
	private static final Logger logger = Logger.getLogger(Montee.class);

	Comparator<Deplacement> mComparator;

	public Montee(Ascenseur pAscenseur, Etat pEtatPrecedent) {
		super(pAscenseur, pEtatPrecedent);
		logger.info("Changement etat");
		pAscenseur.maj(pAscenseur.getEtageCourant(), MONTEE);
		mComparator = new DepEtageInfCompartor();
	}

	@Override
	public void signalerChangementDEtage() {
		incrementerEtage();
		int etage = mAscenseur.getEtageCourant();

		Deplacement depDemande = mAscenseur.getMonteelist().get(0);

		// si le prochain etage est l'etage demande
		if (abs(depDemande.getEtage() - mAscenseur.getEtageCourant()) == abs(1)) {
			mAscenseur.setEtat(new ArretImminent(mAscenseur, this));
		}

	}



	@Override
	protected void handle(Deplacement pDep) {
		logger.info("ajouter demande montee");
		mAscenseur.getMonteelist().add(pDep);
		mAscenseur.getIhm().allumerBouton(pDep);
		Collections.sort(mAscenseur.getMonteelist(), mComparator);
	}

}